<?php

/**
 * home actions.
 *
 * @package    preuvideo
 * @subpackage home
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class turankingActions extends sfActions {

    /**
     * Executes index action
     *
     * @param sfRequest $request A request object
     */
    public function executeIndex(sfWebRequest $request) {

        //echo '<div>app_id: '.sfConfig::get('app_youtube_user').'</div>';
    }
    public function executeAcercaDelRanking(sfWebRequest $request) {

        //echo '<div>app_id: '.sfConfig::get('app_youtube_user').'</div>';
    }
    public function executeQuienesSomos(sfWebRequest $request) {

        //echo '<div>app_id: '.sfConfig::get('app_youtube_user').'</div>';
    }
    public function executeComoSeCalcula(sfWebRequest $request) {

        //echo '<div>app_id: '.sfConfig::get('app_youtube_user').'</div>';
    }
    public function executePreguntasFrecuentes(sfWebRequest $request) {

        //echo '<div>app_id: '.sfConfig::get('app_youtube_user').'</div>';
    }
    public function executeEjemplo(sfWebRequest $request) {
        $this->setLayout("blank");
        //echo '<div>app_id: '.sfConfig::get('app_youtube_user').'</div>';
    }
    public function executeIndexBlank(sfWebRequest $request) {

        $this->setLayout("blank");
    }
    public function executeSimulador(sfWebRequest $request) {

        //echo '<div>app_id: '.sfConfig::get('app_youtube_user').'</div>';
    }
    public function executeVerColegios(sfWebRequest $request) {
        $term = trim(strip_tags($_GET['term']));

        $con = Doctrine_Manager::getInstance()->connection();
        $query = "SELECT nombre,provincia,region,comuna,rama_educacional,id FROM colegio WHERE nombre LIKE '%" . $term . "%' ORDER BY id LIMIT 30";

        $st=$con->execute($query);
        $result = $st->fetchAll();


        foreach($result as $row) {

            if ($row['region'] == '1') {
                $region = 'I - Región de Tarapacá';
            }
            if ($row['region'] == '2') {
                $region = 'II - Región de Antofagasta';
            }

            if ($row['region'] == '3') {
                $region = 'III - Región de Atacama';
            }

            if ($row['region'] == '4') {
                $region = 'IV - Región de Coquimbo';
            }

            if ($row['region'] == '5') {
                $region = 'V - Región de Valparaíso';
            }

            if ($row['region'] == '6') {
                $region = 'VI - Región de O\'Higgins';
            }
            if ($row['region'] == '7') {
                $region = 'VII - Región del Maule';
            }

            if ($row['region'] == '8') {
                $region = 'VIII - Región del Bío-Bío';
            }

            if ($row['region'] == '9') {
                $region = 'IX - Región de La Araucanía';
            }

            if ($row['region'] == '10') {
                $region = 'X - Región de Los Lagos';
            }
            if ($row['region'] == '11') {
                $region = 'XI - Región de Aisén';
            }
            if ($row['region'] == '12') {
                $region = 'XII - Región de Magallanes';
            }
            if ($row['region'] == '13') {
                $region = 'Región Metropolitana de Santiago';
            }
            if ($row['region'] == '14') {
                $region = 'XIV - Región de Los Ríos';
            }
            if ($row['region'] == '15') {
                $region = 'XV - Región de Arica y Parinacota';
            }

            $row['id'] = htmlentities(stripslashes($row['id']));
            $row['value'] = $row['nombre'] . ' ('. $row['rama_educacional'] .' de '.  $row['comuna'] . ', ' . $region . ')';

            $row['id'] = (int) $row['id'];
            $row_set[] = $row;
        }


        //error_log(json_encode($row_set));
        $json = json_encode($row_set);

        if($json == '[]') {
            $json = "[{\"value\":\"1) No encuentro mi colegio y es diurno.\",\"id\":10001},
                {\"value\":\"2) No encuentro mi colegio y es vespertino.\",\"id\":10002},
                {\"value\":\"3) No encuentro mi colegio y es técnico-profesional.\",\"id\":10003}]";
        }

        echo $json;

        return $this->renderPartial('verColegios', array('json' => $json));
    }
    public function executeMostrarColegioMini(sfWebRequest $request) {
        $id = $request->getParameter('id');

        if ($id != 10001 && $id != 10002 && $id != 10003) {
            $colegio = Doctrine_Core::getTable('Colegio')->findOneById($id);
            $modo = 1;
        } else {
            if ($id == 10001) {
                $colegio = 'diurnos';
            }
            if ($id == 10002) {
                $colegio = 'vespertinos';
            }
            if ($id == 10003) {
                $colegio = 'técnico-profesionales';
            }

            $colegio = 'Se tomará el promedio de todos los ' . $colegio . '.';
            $modo = 2;
        }

        if ($request->isXmlHttpRequest()) {
            return $this->renderPartial('colegio', array('colegio' => $colegio, 'modo' => $modo, 'id' => $id));
        }
    }

    public function executeMostrarColegio(sfWebRequest $request) {
        $id = $request->getParameter('id');
        $metodo = $request->getParameter('metodo');

        if ($id != 10001 && $id != 10002 && $id != 10003) {
            $colegio = Doctrine_Core::getTable('Colegio')->findOneById($id);

            $con = Doctrine_Manager::getInstance()->connection();
            $con->execute("INSERT INTO log_colegios_consultados(colegio_id) VALUES(".$colegio->getId().")");

            $modo = 1;
        } else {
            if ($id == 10001) {
                $colegio = 'diurnos';
            }
            if ($id == 10002) {
                $colegio = 'vespertinos';
            }
            if ($id == 10003) {
                $colegio = 'técnico-profesionales';
            }

            $colegio = 'Se tomará el promedio de todos los ' . $colegio . '.';
            $modo = 2;
        }
        if($metodo == "blank") {

        }
        else {
            $metodo = null;
        }

        if ($request->isXmlHttpRequest()) {
            return $this->renderPartial('calculadorPuntaje', array('colegio' => $colegio, 'modo' => $modo, 'id' => $id, 'metodo' => $metodo));
        }
    }

    public function executeCalcular(sfWebRequest $request) {
        $colegio_id = $request->getParameter('colegio_id');
        $agno_egreso = $request->getParameter('agno_egreso');
        $promedioEstudiante = $request->getParameter('promedio_notas');
        $metodo = $request->getParameter('metodo');

        $promedioEstudiante = str_replace(",", ".", "$promedioEstudiante");

        if ($promedioEstudiante < 4 || $promedioEstudiante > 7) {
            exit;
        }

     //    echo '<div style="font-size:10px;color:#BBBBBB;">ColegioID: ' . $colegio_id . '</div>';
        $colegio = Doctrine::getTable('Colegio')->findOneById($colegio_id);
      //  echo '<div style="font-size:10px;color:#BBBBBB;">Colegio: ' . $colegio->getNombre() . '</div>';
        $puntajes = $colegio->getPuntajes();

        $notas = array();
        $i = 0;
        $sumaMinima = 0;
        $sumaPromedio = 0;
        $sumaMaxima = 0;

        foreach ($puntajes as $puntaje) {
            $notaMinima[$puntaje->getAgno()] = $this->calculoNota($puntaje->getMin(), $colegio->getRamaEducacional());
            $notaPromedio[$puntaje->getAgno()] = $this->calculoNota($puntaje->getPromedio(), $colegio->getRamaEducacional());
            $notaMaxima[$puntaje->getAgno()] = $this->calculoNota($puntaje->getMax(), $colegio->getRamaEducacional());
        //    echo '<div style="font-size:10px;color:#BBBBBB;"> - Promedio Puntaje Colegio ' . $puntaje->getAgno() . '
        //            -- (min: ' . $puntaje->getMin() . ' / promedio: ' . $puntaje->getPromedio() . ' / max: ' . $puntaje->getMax() . ')</div>';
        }
        $i = 0;
        $cuantosMinimo = 0;
        $cuantosPromedio = 0;
        $cuantosMaximo = 0;

        for ($agno = $agno_egreso; $agno > $agno_egreso - 3; $agno--) {
            if ($notaMinima[$agno] != NULL) {
                $sumaMinima = $sumaMinima + $notaMinima[$agno];
                $cuantosMinimo++;
            }
            if ($notaPromedio[$agno] != NULL) {
                $sumaPromedio = $sumaPromedio + $notaPromedio[$agno];
                $cuantosPromedio++;
            }
            if ($notaMaxima[$agno] != NULL) {
                $sumaMaxima = $sumaMaxima + $notaMaxima[$agno];
                $cuantosMaximo++;
            }
           // echo '<div style="font-size:10px;color:#BBBBBB;"> - Promedio Puntaje Colegio ' . $agno . '
                //   -- (min: ' . number_format($notaMinima[$agno], 2) . ' / promedio: ' . number_format($notaPromedio[$agno], 2) . ' / max: ' . number_format($notaMaxima[$agno], 2) . ')</div>';
        }
      //  echo '<div>el print:' . print_r($nota) . '</div>';

        $promedioMinColegio = $sumaMinima / $cuantosMinimo;
        $promedioPromedioColegio = $sumaPromedio / $cuantosPromedio;
        $promedioMaxColegio = $sumaMaxima / $cuantosMaximo;
      //  echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Min Colegio: ' . $promedioMinColegio . ' (suma: ' . $sumaMinima . ' / cuantos:' . $cuantosMinimo . ')</div>';
       // echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Promedio Colegio: ' . $promedioPromedioColegio . ' (suma: ' . $sumaPromedio . ' / cuantos:' . $cuantosPromedio . ')</div>';
        //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio MaxColegio: ' . $promedioMaxColegio . ' (suma: ' . $sumaMaxima . ' / cuantos:' . $cuantosMaximo . ')</div>';
        //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Estudiante: ' . $promedioEstudiante . '</div>';

        if ($promedioEstudiante > $promedioPromedioColegio) {
            $puntajeFinal = 500 + ($promedioEstudiante - $promedioPromedioColegio) * 350 / ($promedioMaxColegio - $promedioPromedioColegio);
        } elseif ($promedioEstudiante == $promedioPromedioColegio) {
            $puntajeFinal = 500;
        } else {
            $puntajeFinal = 213 + ($promedioEstudiante - $promedioMinColegio) * 287 / ($promedioPromedioColegio - $promedioMinColegio);
        }

        if ($puntajeFinal > 850) {
            $puntajeFinal = 850;
        }
        if ($puntajeFinal < 213) {
            $puntajeFinal = 213;
        }

        if($metodo == "blank"){

        }
        else{
            $metodo = null;
        }
        return $this->renderPartial('calculo', array('promedioEstudiante' => $promedioEstudiante, 'puntajeFinal' => $puntajeFinal, 'minColegio' => $promedioMinColegio, 'maxColegio' => $promedioMaxColegio, 'promedioColegio' => $promedioPromedioColegio, 'colegio' => $colegio->getNombre(),'metodo' => $metodo));
    }
    public function executeCargar(sfWebRequest $request) {

    }
    public function executeCalcular2012(sfWebRequest $request) {
       /*
        $colegio_id = $request->getParameter('colegio_id');
        $agno_egreso = $request->getParameter('agno_egreso');
        $promedioEstudiante = $request->getParameter('promedio_notas');
        */

        $rut = $request->getParameter('rut');

        //$result[0][0];

        if($rut != NULL){
            $con = Doctrine_Manager::getInstance()->connection();
            $query = "
                select      a.id,
                            a.ptje_nem,
                            a.colegio_id,
                            a.rama_educacional,
                            a.numero_documento
                from        psu2012.alumno_resultado a
                where       a.numero_documento = '".$rut."'
                limit       0, 1
                ";
        }
        else{
            $con = Doctrine_Manager::getInstance()->connection();
            $query = "
                select      a.id,
                            a.ptje_nem,
                            a.colegio_id,
                            a.rama_educacional,
                            a.numero_documento
                from        psu2012.alumno_resultado a
                where       a.puntaje_ranking IS NULL
                limit       0,5000
                ";
        }


            $st=$con->execute($query);
            $result = $st->fetchAll();
        $cuantosOk = 0;
        $cuantosSinPuntaje = 0;
        $cuantosPromediosIguales = 0;
        $cuantosMalPromedioEstudiante = 0;
        foreach($result as $lista){
            $agno_egreso = "2011";
            $rama_educacional = $lista["rama_educacional"];
            $promedioEstudiante = $this->calculoNota($lista["ptje_nem"], $rama_educacional);
            $colegio_id = $lista["colegio_id"];
            $rut = $lista["numero_documento"];
            $id_alumno = $lista["id"];


            if ($promedioEstudiante < 4 || $promedioEstudiante > 7) {
                $puntajeFinal =  1;
                $cuantosMalPromedioEstudiante++;
            }
            else{
                $puntajes = array();
                // echo '<div style="font-size:10px;color:#BBBBBB;">ColegioID: ' . $colegio_id . '</div>';
                //$colegio = Doctrine::getTable('Colegio')->findOneById($colegio_id);
                //echo '<div style="font-size:10px;color:#BBBBBB;">Colegio: ' . $colegio->getNombre() . '</div>';
                $query = "
                    select      *
                    from        puntaje p
                    where       p.colegio_id = ".$colegio_id."
                    ";
                $st=$con->execute($query);
                $puntajes = $st->fetchAll();

                $notas = array();
                $i = 0;
                $sumaMinima = 0;
                $sumaPromedio = 0;
                $sumaMaxima = 0;
                
                $notaMinima = null;
                $notaPromedio  = null;
                $notaMaxima = null;
                $notaMinima = array();
                $notaPromedio  = array();
                $notaMaxima = array();

                foreach ($puntajes as $puntaje) {
                    $notaMinima[$puntaje["agno"]] = $this->calculoNota($puntaje["min"], $rama_educacional);
                    $notaPromedio[$puntaje["agno"]] = $this->calculoNota($puntaje["promedio"], $rama_educacional);
                    $notaMaxima[$puntaje["agno"]] = $this->calculoNota($puntaje["max"], $rama_educacional);
                    //    echo '<div style="font-size:10px;color:#BBBBBB;"> - Promedio Puntaje Colegio ' . $puntaje->getAgno() . '
                    //            -- (min: ' . $puntaje->getMin() . ' / promedio: ' . $puntaje->getPromedio() . ' / max: ' . $puntaje->getMax() . ')</div>';
                }
                $i = 0;
                $cuantosMinimo = 0;
                $cuantosPromedio = 0;
                $cuantosMaximo = 0;

                for ($agno = $agno_egreso; $agno > $agno_egreso - 3; $agno--) {
                    if (isset($notaMinima[$agno])) {
                        $sumaMinima = $sumaMinima + $notaMinima[$agno];
                        $cuantosMinimo++;
                    }
                    if (isset($notaPromedio[$agno])) {
                        $sumaPromedio = $sumaPromedio + $notaPromedio[$agno];
                        $cuantosPromedio++;
                    }
                    if (isset($notaMaxima[$agno])) {
                        $sumaMaxima = $sumaMaxima + $notaMaxima[$agno];
                        $cuantosMaximo++;
                    }
                    // echo '<div style="font-size:10px;color:#BBBBBB;"> - Promedio Puntaje Colegio ' . $agno . '
                    //    -- (min: ' . number_format($notaMinima[$agno], 2) . ' / promedio: ' . number_format($notaPromedio[$agno], 2) . ' / max: ' . number_format($notaMaxima[$agno], 2) . ')</div>';
                }
                //  echo '<div>el print:' . print_r($nota) . '</div>';

                if($cuantosMinimo > 0 && $cuantosPromedio > 0 && $cuantosMaximo > 0){
                    $promedioMinColegio = $sumaMinima / $cuantosMinimo;
                    $promedioPromedioColegio = $sumaPromedio / $cuantosPromedio;
                    $promedioMaxColegio = $sumaMaxima / $cuantosMaximo;
                    //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Min Colegio: ' . $promedioMinColegio . ' (suma: ' . $sumaMinima . ' / cuantos:' . $cuantosMinimo . ')</div>';
                    //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Promedio Colegio: ' . $promedioPromedioColegio . ' (suma: ' . $sumaPromedio . ' / cuantos:' . $cuantosPromedio . ')</div>';
                    //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio MaxColegio: ' . $promedioMaxColegio . ' (suma: ' . $sumaMaxima . ' / cuantos:' . $cuantosMaximo . ')</div>';
                    //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Estudiante: ' . $promedioEstudiante . '</div>';

                    if ($promedioEstudiante > $promedioPromedioColegio) {
                        if($promedioMaxColegio != $promedioPromedioColegio){
                            $puntajeFinal = 500 + ($promedioEstudiante - $promedioPromedioColegio) * 350 / ($promedioMaxColegio - $promedioPromedioColegio);
                        }
                        else{
                            $puntajeFinal = 3;
                            $cuantosPromediosIguales++;
                        }
                    } elseif ($promedioEstudiante == $promedioPromedioColegio) {
                        $puntajeFinal = 500;
                    } else {
                        if($promedioPromedioColegio != $promedioMinColegio){
                            $puntajeFinal = 213 + ($promedioEstudiante - $promedioMinColegio) * 287 / ($promedioPromedioColegio - $promedioMinColegio);
                        }
                        else{
                            $puntajeFinal = 3;
                            $cuantosPromediosIguales++;
                        }
                    }

                    if ($puntajeFinal > 850) {
                        $puntajeFinal = 850;
                    }
                    if ($puntajeFinal < 213) {
                        $puntajeFinal = 213;
                    }
                    $cuantosOk++;
                }
                else{
                    $puntajeFinal =  2;
                    $cuantosSinPuntaje++;
                }
            }
            if($rut == null){
                $query = "
                    update      psu2012.alumno_resultado a
                    set         a.puntaje_ranking = ".$puntajeFinal."
                    where       a.id = ".$id_alumno.";
                    ";
                $st=$con->execute($query);
                
            }
            else{

                $query = "
                    update      psu2012.alumno_resultado a
                    set         a.puntaje_ranking = ".$puntajeFinal."
                    where       a.id = ".$id_alumno.";
                    ";
                $st=$con->execute($query);
            }
            //$print = $print."<div>".$rut." \t ".$puntajeFinal."</div>";
        }
        echo "<div style='bold'>Ruts Modificados: ".$cuantosOk."</div>";
        echo "<div style='bold'>Ruts (Colegio sin Puntajes): ".$cuantosSinPuntaje."</div>";
        echo "<div style='bold'>Ruts (en colegios con promedios iguales): ".$cuantosPromediosIguales."</div>";
        echo "<div style='bold'>Ruts (Mal Promedio Estudiante): ".$cuantosMalPromedioEstudiante."</div>";
        
        return $this->renderPartial('calcular2012', array());
    }
    public function executeCalcularTabla(sfWebRequest $request) {
       /*
        $colegio_id = $request->getParameter('colegio_id');
        $agno_egreso = $request->getParameter('agno_egreso');
        $promedioEstudiante = $request->getParameter('promedio_notas');
        */

        $rut = $request->getParameter('rut');

        //$result[0][0];

        $con = Doctrine_Manager::getInstance()->connection();
        $query = "
            select      a.colegio_id,
                        a.PTJE_NEM as nem,
                        a.rut,
                        a.rama_educacional
            from        turanking.tabla_puntajes_2 a
            where       a.puntaje_ranking IS NULL AND
                        a.colegio_id IS NOT NULL
            limit       0,5000
            ";


        $st=$con->execute($query);
        $result = $st->fetchAll();

        $cuantosOk = 0;

        $cuantosSinPuntaje = 0;
        $cuantosPromediosIguales = 0;
        $cuantosMalPromedioEstudiante = 0;

        foreach($result as $lista){
            $agno_egreso = "2011";
            $rama_educacional = $lista["rama_educacional"];
            $promedioEstudiante = $this->calculoNota($lista["nem"], $rama_educacional);
            $colegio_id = $lista["colegio_id"];
            $rut_alumno = $lista["rut"];


            if ($promedioEstudiante < 4 || $promedioEstudiante > 7) {
                $puntajeFinal =  1;
                $cuantosMalPromedioEstudiante++;
            }
            else{
                $puntajes = array();
                // echo '<div style="font-size:10px;color:#BBBBBB;">ColegioID: ' . $colegio_id . '</div>';
                //$colegio = Doctrine::getTable('Colegio')->findOneById($colegio_id);
                //echo '<div style="font-size:10px;color:#BBBBBB;">Colegio: ' . $colegio->getNombre() . '</div>';
                $query = "
                    select      *
                    from        puntaje p
                    where       p.colegio_id = ".$colegio_id."
                    ";
                $st=$con->execute($query);
                $puntajes = $st->fetchAll();

                $notas = array();
                $i = 0;
                $sumaMinima = 0;
                $sumaPromedio = 0;
                $sumaMaxima = 0;

                $notaMinima = null;
                $notaPromedio  = null;
                $notaMaxima = null;
                $notaMinima = array();
                $notaPromedio  = array();
                $notaMaxima = array();

                foreach ($puntajes as $puntaje) {
                    $notaMinima[$puntaje["agno"]] = $this->calculoNota($puntaje["min"], $rama_educacional);
                    $notaPromedio[$puntaje["agno"]] = $this->calculoNota($puntaje["promedio"], $rama_educacional);
                    $notaMaxima[$puntaje["agno"]] = $this->calculoNota($puntaje["max"], $rama_educacional);
                    //    echo '<div style="font-size:10px;color:#BBBBBB;"> - Promedio Puntaje Colegio ' . $puntaje->getAgno() . '
                    //            -- (min: ' . $puntaje->getMin() . ' / promedio: ' . $puntaje->getPromedio() . ' / max: ' . $puntaje->getMax() . ')</div>';
                }
                $i = 0;
                $cuantosMinimo = 0;
                $cuantosPromedio = 0;
                $cuantosMaximo = 0;

                for ($agno = $agno_egreso; $agno > $agno_egreso - 3; $agno--) {
                    if (isset($notaMinima[$agno])) {
                        $sumaMinima = $sumaMinima + $notaMinima[$agno];
                        $cuantosMinimo++;
                    }
                    if (isset($notaPromedio[$agno])) {
                        $sumaPromedio = $sumaPromedio + $notaPromedio[$agno];
                        $cuantosPromedio++;
                    }
                    if (isset($notaMaxima[$agno])) {
                        $sumaMaxima = $sumaMaxima + $notaMaxima[$agno];
                        $cuantosMaximo++;
                    }
                    // echo '<div style="font-size:10px;color:#BBBBBB;"> - Promedio Puntaje Colegio ' . $agno . '
                    //    -- (min: ' . number_format($notaMinima[$agno], 2) . ' / promedio: ' . number_format($notaPromedio[$agno], 2) . ' / max: ' . number_format($notaMaxima[$agno], 2) . ')</div>';
                }
                //  echo '<div>el print:' . print_r($nota) . '</div>';

                if($cuantosMinimo > 0 && $cuantosPromedio > 0 && $cuantosMaximo > 0){
                    $promedioMinColegio = $sumaMinima / $cuantosMinimo;
                    $promedioPromedioColegio = $sumaPromedio / $cuantosPromedio;
                    $promedioMaxColegio = $sumaMaxima / $cuantosMaximo;
                    //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Min Colegio: ' . $promedioMinColegio . ' (suma: ' . $sumaMinima . ' / cuantos:' . $cuantosMinimo . ')</div>';
                    //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Promedio Colegio: ' . $promedioPromedioColegio . ' (suma: ' . $sumaPromedio . ' / cuantos:' . $cuantosPromedio . ')</div>';
                    //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio MaxColegio: ' . $promedioMaxColegio . ' (suma: ' . $sumaMaxima . ' / cuantos:' . $cuantosMaximo . ')</div>';
                    //echo '<div style="font-size:10px;color:#BBBBBB;">-- Promedio Estudiante: ' . $promedioEstudiante . '</div>';

                    if ($promedioEstudiante > $promedioPromedioColegio) {
                        if($promedioMaxColegio != $promedioPromedioColegio){
                            $puntajeFinal = 500 + ($promedioEstudiante - $promedioPromedioColegio) * 350 / ($promedioMaxColegio - $promedioPromedioColegio);
                        }
                        else{
                            $puntajeFinal = 3;
                            $cuantosPromediosIguales++;
                        }
                    } elseif ($promedioEstudiante == $promedioPromedioColegio) {
                        $puntajeFinal = 500;
                    } else {
                        if($promedioPromedioColegio != $promedioMinColegio){
                            $puntajeFinal = 213 + ($promedioEstudiante - $promedioMinColegio) * 287 / ($promedioPromedioColegio - $promedioMinColegio);
                        }
                        else{
                            $puntajeFinal = 3;
                            $cuantosPromediosIguales++;
                        }
                    }

                    if ($puntajeFinal > 850) {
                        $puntajeFinal = 850;
                    }
                    if ($puntajeFinal < 213) {
                        $puntajeFinal = 213;
                    }
                    $cuantosOk++;
                }
                else{
                    $puntajeFinal =  2;
                    $cuantosSinPuntaje++;
                }
            }
            $query = "
                update      turanking.tabla_puntajes_2 t
                set         t.puntaje_ranking = ".$puntajeFinal."
                where       t.rut = ".$rut_alumno.";
                ";
            $st=$con->execute($query);

            //$print = $print."<div>".$rut." \t ".$puntajeFinal."</div>";
        }
        echo "<div style='bold'>Ruts Modificados: ".$cuantosOk."</div>";
        echo "<div style='bold'>Ruts (Colegio sin Puntajes): ".$cuantosSinPuntaje."</div>";
        echo "<div style='bold'>Ruts (en colegios con promedios iguales): ".$cuantosPromediosIguales."</div>";
        echo "<div style='bold'>Ruts (Mal Promedio Estudiante): ".$cuantosMalPromedioEstudiante."</div>";

        return $this->renderPartial('calcular2012', array());
    }
    public function executeCalculoNem(sfWebRequest $request){
        $nem = $request->getParameter('nem');
        $tipo = $request->getParameter('tipo');

        if($tipo == 2){
            $tipoE = "HC - NOCTURNO";
        }
        elseif($tipo == 3){
            $tipoE = "TECNICA Y SERVICIOS";
        }
        else{
            $tipoE = "HC - DIURNO";
        }
        echo $this->calculoNota($nem, $tipoE);
        $this->setLayout(NULL);
        exit;
    }
    private function calculoNota($puntaje, $tipo_colegio) {
        if ($tipo_colegio == "HC - DIURNO") {
            $min = 208;
            $max = 826;
        } elseif ($tipo_colegio == "HC - NOCTURNO") {
            $min = 218;
            $max = 824;
        } elseif ($tipo_colegio == "TECNICA Y SERVICIOS" || $tipo_colegio == "MARITIMA" || $tipo_colegio == "INDUSTRIAL" || $tipo_colegio == "COMERCIAL" || $tipo_colegio == "AGRICOLA") {
            $min = 213;
            $max = 825;
        } else {
            return false;
        }
        if ($puntaje >= 208 && $puntaje <= 826) {
            return 4 + (7 - 4) * ($puntaje - $min) / ($max - $min);
        } else {
            return null;
        }
    }
    private function notaToNem($nota, $tipo_colegio) {
        if ($tipo_colegio == "HC - DIURNO") {
            $min = 208;
            $max = 826;
        } elseif ($tipo_colegio == "HC - NOCTURNO") {
            $min = 218;
            $max = 824;
        } elseif ($tipo_colegio == "TECNICA Y SERVICIOS" || $tipo_colegio == "MARITIMA" || $tipo_colegio == "INDUSTRIAL" || $tipo_colegio == "COMERCIAL" || $tipo_colegio == "AGRICOLA") {
            $min = 213;
            $max = 825;
        } else {
            return false;
        }
        if ($nota >= 4 && $nota <= 7) {
            return $min + ($nota - 4) * ($max - $min) / (7 - 4);
        } else {
            return null;
        }
    }
    public function executeCalcularCrunch(sfWebRequest $request) {
       /*
        $colegio_id = $request->getParameter('colegio_id');
        $agno_egreso = $request->getParameter('agno_egreso');
        $promedioEstudiante = $request->getParameter('promedio_notas');
        */

        $rut = $request->getParameter('rut');

        //$result[0][0];

        if($rut != NULL){
            $con = Doctrine_Manager::getInstance()->connection();
            $query = "
                select      a.id,
                            a.ptje_nem,
                            a.colegio_id,
                            a.rama_educacional,
                            a.numero_documento
                from        psu2012.alumno_resultado a
                where       a.numero_documento = '".$rut."'
                limit       0, 1
                ";
        }
        else{
            $con = Doctrine_Manager::getInstance()->connection();
            $query = "
                select      a.id,
                            a.ptje_nem,
                            a.colegio_id,
                            a.rama_educacional,
                            a.numero_documento
                from        psu2012.alumno_resultado a
                where       a.puntaje_cruch IS NULL
                limit       0,5000
                ";
        }


        $st=$con->execute($query);
        $result = $st->fetchAll();

        $cuantosOk = 0;
        $cuantosSinPuntaje = 0;
        $cuantosPromediosIguales = 0;
        $cuantosMalPromedioEstudiante = 0;

        foreach($result as $lista){
            $agno_egreso = "2011";
            $rama_educacional = $lista["rama_educacional"];
            $promedioEstudiante = Colegio::nemToNota($lista["ptje_nem"], $rama_educacional);
            
            $colegio_id = $lista["colegio_id"];
            $rut = $lista["numero_documento"];
            $id_alumno = $lista["id"];


            if ($promedioEstudiante < 4 || $promedioEstudiante > 7) {
                $promedioPromedioColegio = 0;
                $promedioMaxColegio = 0;
                $puntajeFinal =  "NULL";
                $cuantosMalPromedioEstudiante++;
                $promedioEstudiante = 0;
            }
            else{
                $parametros_colegio = Colegio::parametrosColegio($colegio_id);
                if($parametros_colegio){
                    $puntaje_alumno = Colegio::calcularPuntajesCruch($parametros_colegio, array($promedioEstudiante));

                    if($puntaje_alumno[0]){
                        $puntajeFinal = $puntaje_alumno[0][1];
                        $cuantosOk++;
                    }
                    else{
                        $puntajeFinal="NULL";
                        $cuantosSinPuntaje++;
                    }
                    //print_r($parametros_colegio);
                    //print_r($puntaje_alumno);
                    //exit;
                }
                else{
                    $promedioPromedioColegio = 0;
                    $promedioMaxColegio = 0;

                    $puntajeFinal="NULL";
                    $cuantosSinPuntaje++;
                }
            }
            // Consulta de 1 rut
            if($rut == null){
                $query = "
                    update      psu2012.alumno_resultado a
                    set         a.puntaje_cruch = ".$puntajeFinal."
                    where       a.id = ".$id_alumno.";
                    ";
                $st=$con->execute($query);
            }
            // Consulta Masiva
            else{
                $query = "
                    update      psu2012.alumno_resultado a
                    set         a.puntaje_cruch = ".$puntajeFinal."
                    where       a.id = ".$id_alumno.";
                    ";
                $st=$con->execute($query);
            }
            //$print = $print."<div>".$rut." \t ".$puntajeFinal."</div>";
        }
        echo "<div style='bold'>Ruts Modificados: ".$cuantosOk."</div>";
        echo "<div style='bold'>Ruts (Colegio sin Puntajes): ".$cuantosSinPuntaje."</div>";
        echo "<div style='bold'>Ruts (en colegios con promedios iguales): ".$cuantosPromediosIguales."</div>";
        echo "<div style='bold'>Ruts (Mal Promedio Estudiante): ".$cuantosMalPromedioEstudiante."</div>";

        return $this->renderPartial('calcularCrunch', array());
    }


}
